package com.h3c.nem.utils;

import com.alibaba.fastjson.JSONObject;
import com.h3c.nem.client.AbilityClient;
import com.h3c.nem.dto.beisen.PtEnumDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

@Component
public class EnumUtil {


    private static AbilityClient abilityClient;

    private static String ptToken;

    @Autowired
    public void setAbilityClient(AbilityClient abilityClient) {
        this.abilityClient = abilityClient;
    }

    @Value("${ptability.token}")
    public void setPtToken(String ptToken) {
        this.ptToken = ptToken;
    }

    /**
     * 获取枚举
     *
     * @param enumCode
     * @param nameZh
     * @return
     */
    public static String getEnumValue(String enumCode, String nameZh) {
        try {
            PtEnumDTO enumDTO = new PtEnumDTO();
            enumDTO.setAppId("nem-manager");
            enumDTO.setEnumCode(enumCode);
            JSONObject ptEnumRes = abilityClient.getPtEnum(enumDTO, ptToken);
            List<PtEnumDTO> ptEnum = JSONObject.parseArray(JSONObject.toJSONString(ptEnumRes.get("data")), PtEnumDTO.class);
            for (PtEnumDTO dto : ptEnum) {
                if (Objects.equals(dto.getNameZh(), nameZh)) {
                    return dto.getValue();
                }
            }
        } catch (Exception ignore) {
        }
        return "";
    }

    public static String getNationPlaceValue(String place) {
        try {
            PtEnumDTO enumDTO = new PtEnumDTO();
            enumDTO.setAppId("nem-manager");
            enumDTO.setEnumCode("NEW_STAFF_ORIGIN");
            JSONObject ptEnumRes = abilityClient.getPtEnum(enumDTO, ptToken);
            List<PtEnumDTO> ptEnum = JSONObject.parseArray(JSONObject.toJSONString(ptEnumRes.get("data")), PtEnumDTO.class);
            for (PtEnumDTO dto : ptEnum) {
                String nameZh = dto.getNameZh();
                if (place.contains(nameZh)) {
                    return dto.getValue();
                }
            }
        } catch (Exception e) {
        }
        return "";
    }

    public static String getNationPlaceName(String code) {
        try {
            PtEnumDTO enumDTO = new PtEnumDTO();
            enumDTO.setAppId("nem-manager");
            enumDTO.setEnumCode("NEW_STAFF_ORIGIN");
            JSONObject ptEnumRes = abilityClient.getPtEnum(enumDTO, ptToken);
            List<PtEnumDTO> ptEnum = JSONObject.parseArray(JSONObject.toJSONString(ptEnumRes.get("data")), PtEnumDTO.class);
            for (PtEnumDTO dto : ptEnum) {
                String value = dto.getValue();
                if (value.equals(code)) {
                    return dto.getNameZh();
                }
            }
        } catch (Exception e) {
        }
        return "";
    }

    public static List<PtEnumDTO> getEnums(String enumCode) {
        PtEnumDTO enumDTO = new PtEnumDTO();
        enumDTO.setAppId("nem-manager");
        enumDTO.setEnumCode(enumCode);
        JSONObject ptEnumRes = abilityClient.getPtEnum(enumDTO, ptToken);
        List<PtEnumDTO> ptEnum = JSONObject.parseArray(JSONObject.toJSONString(ptEnumRes.get("data")), PtEnumDTO.class);
        if (!CollectionUtils.isEmpty(ptEnum)) {
            return ptEnum;
        }
        return new ArrayList<>();
    }
}
